This invention relates to the identification of objects available for synchronization between two computing devices. The invention further relates to the exchange of arbitrary data between the two computing devices during a synchronization process.
Laptop, handheld, and other portable computers or computing devices have increased in popularity as the devices have become smaller in size and less expensive. Additionally, improved operating speed and processing power of portable computers has increased their popularity. Many portable computers are capable of storing multiple application programs, such as address books, games, calculators, and the like. The application programs can be permanently installed in the portable computer during manufacture (e.g., on read-only memory (ROM)). Alternatively, one or more application programs may be installed by the user after purchasing the portable computer.
Many of these small computers have limited physical resources. For example, both primary and secondary memory are typically quite limited in comparison to desktop computers. In addition, small computers and other information processing devices often do not accommodate any form of removable mass storage such as floppy disks or optical disks. To make up for this deficiency, such computers are often capable of utilizing the resources of desktop computers or other base computers.
Initially, a base computer (such as a desktop computer) installs application programs on a smaller, more resource-limited portable computer, such as a laptop, handheld, or palmtop computer. Such application programs are typically distributed from their manufacturers on some type of non-volatile storage medium such as a floppy disk or a CD-ROM. Since the portable computer typically has no hardware to read such a storage medium, the portable computer is instead coupled to communicate with the base computer, typically through a serial link. The base computer reads the application program from the non-volatile storage medium and downloads the program to the portable computer.
Portable computers that can receive application programs downloaded from a desktop computer are versatile and allow application programs to be replaced or upgraded easily. Typically, an installation application is run on the desktop computer that allows the user to select one or more application programs for downloading into the portable computer. After selecting the appropriate application programs, the installation application downloads the application programs to the portable computer.
The invention described herein relates to the synchronization of objects, such as databases, stored in portable computers with corresponding objects stored in a base computer. Some portable computers contain a built-in main memory as well as one or more slots or connectors to receive optional removable memory cards. Such memory cards allow a user to increase the memory resources of a portable computer. The additional memory resources can be used for storing one or more objects, storing additional application programs, or executing additional application programs simultaneously. The memory cards are removable from the portable computer, such that the objects or applications stored on the cards will become inaccessible if the card is removed or disconnected from the portable computer. Inaccessible objects cannot be retrieved from the memory card unless the memory card is coupled to the portable computer.
Typically, when a portable computer is synchronized with a base computer, objects that have been modified since the last synchronization process are synchronized such that the portable computer and the base computer contain identical objects. Further, during each synchronization process, if an object has been deleted on the portable computer or the base computer since the last synchronization process, then the corresponding object on the other system is also deleted. To properly synchronize a portable computer with a base computer, the systems must identify all objects that are accessible and have been modified since the last synchronization process.
Some existing devices use a synchronization manager to identify objects modified since the last synchronization process. The synchronization manager knows of all objects stored in the device (i.e., the portable computer or the base computer) and sequentially checks each object to determine whether the object has been modified since the last synchronization process. This sequential check of all objects may be practical in small systems, but is not feasible in large systems with thousands of objects. Further, the sequential check of all objects works when all objects are known to the synchronization manager. However, in devices that have removable memory cards, the synchronization manager may not know what objects are stored on a particular memory card and, therefore, cannot properly check to see if the objects on the memory card have been modified since the last synchronization process.
During a typical synchronization process, data is exchanged between the two devices being synchronized. This data includes control information that coordinates the synchronization process as well as the object data being synchronized. The two devices are typically restricted from exchanging any other data that is not associated with the synchronization process.
Therefore, it is desirable to provide a mechanism that identifies modified objects on a device without requiring a sequential check of every possible object. Additionally, it is desirable to provide a mechanism that allows for the exchange of arbitrary data between two devices during a synchronization process.
The invention described herein selects objects to be synchronized between a first device, such as a portable computer, and a second device, such as a desktop computer. Rather than performing a sequential check of all possible objects stored in the first device, the invention allows a synchronization manager in the first device to call a function that returns all objects in a particular volume that require synchronization. Additionally, the invention allows the two devices to exchange arbitrary data during a synchronization process, rather than limiting the devices to exchanging data related to the synchronization process.
In a particular implementation of the invention, a synchronization manager in the first device calls an object identification function. In response to being called, the object identification function identifies a first volume that is accessible to the first device. The object identification function also identifies objects associated with a first volume that have been modified since previously synchronizing the first volume. Next, the object identification function identifies the identified objects to the synchronization manager, which is then able to synchronize the identified objects between the first device and the second device.
In another implementation of the invention, when the object identification function is called a second time, the object identification function releases resources used during the first call of the object identification function and returns an indication of whether additional volumes are accessible to the first device.
Using another aspect of the invention, arbitrary data is communicated between a portable computer and a desktop computer during a synchronization process. The synchronization process causes the exchange of pre-defined data between the portable computer and the desktop computer. A data communication function is called to request communication of a particular set of data between the portable computer and the desktop computer. The particular set of data is not associated with the pre-defined data exchanged during the synchronization process. In response to being called, the data communication function communicates the particular set of data between the portable computer and the desktop computer.